-ifndef(BAG_H).
-define(BAG_H, true).


-record(bag, {
    bag_grids = [] :: bag_grids(),
    max_id = 0 %% 道具自增id
}).

-record(item, {
    item_id = 0,
    unique_id = 0,
    num = 0,
    bind = 0,
    show_index = 0, %% 显示位置
    bag_type = 0, %% 存放的背包位置
    item_info = #{} :: item_info()
}).

-type item_info_value() :: term().
-type item_info_key() :: integer().
-type item_info() :: #{item_info_key() => item_info_value()}.
-type item() :: #item{}.
-type items() :: [item()].
-type bag_grids() :: items().
-type cfg_items() :: [{ItemId :: integer(), Num :: integer()}] | [{ItemId :: integer(), Num :: integer(), Bind :: integer()}].
-type bag() :: #bag{}.

-define(BAG_TYPE_LIST, [?BAG_TYPE_NORMAL_BAG, ?BAG_TYPE_NORMAL_STORAGE]).

-define(BAG_TYPE_NORMAL_BAG,        0).  %% 背包类型 - 普通背包
-define(BAG_TYPE_NORMAL_STORAGE,    1).  %% 背包类型 - 普通仓库


-define(ITEM_INFO_BIND, 1). %% 道具信息 - 绑定状态

-define(ITEM_BIND_TYPE_0, 0).   %% 可掉落 - 可交易
-define(ITEM_BIND_TYPE_1, 1).   %% 不可掉落 - 不可交易
-define(ITEM_BIND_TYPE_2, 2).   %% 可掉落 - 不可交易
-define(ITEM_BIND_TYPE_3, 3).   %% 不可掉落 - 可交易

-endif.